package model.events;

import java.util.EventListener;

/**
 * The listener interface for receiving entity events.
 * 
 * @author Ryan Cheatham
 * 
 * @param T
 *          The type of entity that will be listened to.
 */
public interface EntityListener extends EventListener
{
  /**
   * Invoked when an entity is moved.
   * 
   * @param event
   *          The {@link EntityEvent} instance that contains the data on this event.
   */
  public void entityMoved(EntityEvent event);

  /**
   * Invoked when an entity is added.
   * 
   * @param event
   *          The {@link EntityEvent} instance that contains the data on this event.
   */
  public void entityAdded(EntityEvent event);

  /**
   * Invoked when an entity is removed.
   * 
   * @param event
   *          The {@link EntityEvent} instance that contains the data on this event.
   */
  public void entityRemoved(EntityEvent event);

  /**
   * Invoked when the entity is modified.
   * 
   * @param event
   *          The {@link EntityModifiedEvent} that contains the data on this event.
   */
  public void entityModified(EntityModifiedEvent event);
}
